home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / plaf / basic / BasicTableHeaderUI$MouseInputHandler.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  4.6 KB  |  187 lines

  1. package javax.swing.plaf.basic;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Cursor;
  5. import java.awt.Point;
  6. import java.awt.Rectangle;
  7. import java.awt.event.MouseEvent;
  8. import java.util.Enumeration;
  9. import javax.swing.JComponent;
  10. import javax.swing.JTable;
  11. import javax.swing.event.MouseInputListener;
  12. import javax.swing.table.TableColumn;
  13. import javax.swing.table.TableColumnModel;
  14.  
  15. public class BasicTableHeaderUI$MouseInputHandler implements MouseInputListener {
  16.    // $FF: synthetic field
  17.    private final BasicTableHeaderUI this$0;
  18.    private boolean phantomMousePressed;
  19.    private int lastEffectiveMouseX;
  20.  
  21.    public BasicTableHeaderUI$MouseInputHandler(BasicTableHeaderUI var1) {
  22.       this.this$0 = var1;
  23.       this.phantomMousePressed = false;
  24.    }
  25.  
  26.    private int getResizingColumn(Point var1) {
  27.       int var2 = 0;
  28.       Rectangle var3 = new Rectangle(-3, 0, 6, this.this$0.header.getSize().height);
  29.       int var4 = this.this$0.header.getColumnModel().getColumnMargin();
  30.  
  31.       for(Enumeration var5 = this.this$0.header.getColumnModel().getColumns(); var5.hasMoreElements(); ++var2) {
  32.          TableColumn var6 = (TableColumn)var5.nextElement();
  33.          var3.x += var6.getWidth() + var4;
  34.          if (var3.x > var1.x) {
  35.             break;
  36.          }
  37.  
  38.          if (var3.contains(var1)) {
  39.             return var2;
  40.          }
  41.       }
  42.  
  43.       return -1;
  44.    }
  45.  
  46.    public void mouseClicked(MouseEvent var1) {
  47.    }
  48.  
  49.    public void mouseDragged(MouseEvent var1) {
  50.       int var2 = var1.getX();
  51.       int var3 = var2 - this.lastEffectiveMouseX;
  52.       if (var3 != 0) {
  53.          TableColumn var4 = this.this$0.header.getResizingColumn();
  54.          TableColumn var5 = this.this$0.header.getDraggedColumn();
  55.          if (var4 != null) {
  56.             int var6 = var4.getWidth();
  57.             int var7 = var6 + var3;
  58.             var4.setWidth(var7);
  59.             int var8 = this.viewIndexForColumn(var4);
  60.             this.this$0.header.getTable().sizeColumnsToFit(var8);
  61.             int var9 = var4.getWidth() - var6;
  62.             this.lastEffectiveMouseX += var9;
  63.             this.this$0.header.revalidate();
  64.             this.this$0.header.repaint();
  65.             if (this.this$0.header.getUpdateTableInRealTime()) {
  66.                JTable var10 = this.this$0.header.getTable();
  67.                ((JComponent)var10).revalidate();
  68.                ((Component)var10).repaint();
  69.             }
  70.          } else if (var5 != null) {
  71.             this.move(var1, var3);
  72.             this.lastEffectiveMouseX = var2;
  73.          } else {
  74.             this.lastEffectiveMouseX = var2;
  75.          }
  76.  
  77.       }
  78.    }
  79.  
  80.    public void mouseEntered(MouseEvent var1) {
  81.    }
  82.  
  83.    public void mouseExited(MouseEvent var1) {
  84.    }
  85.  
  86.    public void mouseMoved(MouseEvent var1) {
  87.       if (this.getResizingColumn(var1.getPoint()) != -1) {
  88.          Cursor var2 = Cursor.getPredefinedCursor(11);
  89.          if (this.this$0.header.getCursor() != var2) {
  90.             this.this$0.header.setCursor(var2);
  91.          }
  92.       } else {
  93.          Cursor var3 = Cursor.getPredefinedCursor(0);
  94.          if (this.this$0.header.getCursor() != var3) {
  95.             this.this$0.header.setCursor(var3);
  96.          }
  97.       }
  98.  
  99.    }
  100.  
  101.    public void mousePressed(MouseEvent var1) {
  102.       this.phantomMousePressed = true;
  103.       this.this$0.header.setDraggedColumn((TableColumn)null);
  104.       this.this$0.header.setResizingColumn((TableColumn)null);
  105.       this.this$0.header.setDraggedDistance(0);
  106.       Point var2 = var1.getPoint();
  107.       this.lastEffectiveMouseX = var2.x;
  108.       TableColumnModel var3 = this.this$0.header.getColumnModel();
  109.       int var4 = var3.getColumnIndexAtX(var2.x);
  110.       if (var4 != -1) {
  111.          int var5 = this.getResizingColumn(var2);
  112.          if (this.this$0.header.getResizingAllowed() && var5 != -1) {
  113.             TableColumn var7 = var3.getColumn(var5);
  114.             this.this$0.header.setResizingColumn(var7);
  115.          } else if (this.this$0.header.getReorderingAllowed()) {
  116.             TableColumn var6 = var3.getColumn(var4);
  117.             this.this$0.header.setDraggedColumn(var6);
  118.          }
  119.       }
  120.  
  121.    }
  122.  
  123.    public void mouseReleased(MouseEvent var1) {
  124.       this.phantomMousePressed = false;
  125.       this.this$0.header.setResizingColumn((TableColumn)null);
  126.       this.this$0.header.setDraggedColumn((TableColumn)null);
  127.       this.this$0.header.setDraggedDistance(0);
  128.       this.this$0.header.repaint();
  129.       JTable var2 = this.this$0.header.getTable();
  130.       if (var2 != null) {
  131.          ((Component)var2).repaint();
  132.       }
  133.  
  134.    }
  135.  
  136.    private void move(MouseEvent var1, int var2) {
  137.       TableColumnModel var3 = this.this$0.header.getColumnModel();
  138.       int var4 = var3.getColumnCount() - 1;
  139.       TableColumn var5 = this.this$0.header.getDraggedColumn();
  140.       int var6 = this.this$0.header.getDraggedDistance() + var2;
  141.       int var7 = this.viewIndexForColumn(var5);
  142.       if (var6 < 0 && var7 != 0) {
  143.          int var11 = var3.getColumnMargin() + var3.getColumn(var7 - 1).getWidth();
  144.          if (-var6 > var11 / 2) {
  145.             var3.moveColumn(var7, var7 - 1);
  146.             var6 += var11;
  147.             --var7;
  148.          }
  149.       } else if (var6 > 0 && var7 != var4) {
  150.          int var8 = var3.getColumnMargin() + var3.getColumn(var7 + 1).getWidth();
  151.          if (var6 > var8 / 2) {
  152.             var3.moveColumn(var7, var7 + 1);
  153.             var6 = -(var8 - var6);
  154.             ++var7;
  155.          }
  156.       }
  157.  
  158.       Rectangle var12 = this.this$0.header.getHeaderRect(var7);
  159.       var12.x += this.this$0.header.getDraggedDistance();
  160.       Rectangle var9 = this.this$0.header.getHeaderRect(var7);
  161.       var9.x += var6;
  162.       var12 = var12.union(var9);
  163.       this.this$0.header.repaint(var12.x, 0, var12.width, var12.height);
  164.       if (this.this$0.header.getUpdateTableInRealTime()) {
  165.          JTable var10 = this.this$0.header.getTable();
  166.          if (var10 != null) {
  167.             ((Component)var10).repaint(var12.x, 0, var12.width, (var10.getRowHeight() + var10.getIntercellSpacing().height) * var10.getRowCount());
  168.          }
  169.       }
  170.  
  171.       this.this$0.header.setDraggedColumn(var3.getColumn(var7));
  172.       this.this$0.header.setDraggedDistance(var6);
  173.    }
  174.  
  175.    private int viewIndexForColumn(TableColumn var1) {
  176.       TableColumnModel var2 = this.this$0.header.getColumnModel();
  177.  
  178.       for(int var3 = 0; var3 < var2.getColumnCount(); ++var3) {
  179.          if (var2.getColumn(var3) == var1) {
  180.             return var3;
  181.          }
  182.       }
  183.  
  184.       return -1;
  185.    }
  186. }
  187.